Dynomotion

Group: DynoMotion Message: 12555 From: Hardy Family Date: 11/28/2015
Subject: Capturing move/following vectors
Hi Tom,

One of our customers is doing some 3-D surface profiling with a small ball-end mill, and is finding the surface finish to be somewhat worse than his old system using Mach3/SmoothStepper (on the same physical machine).

The kflop setup uses 1um encoder feedback, whereas the old system was open loop.

We are trying to track down the reason for this, but we expect it is because we have not set the axis parameters optimally for this task.  So I am implementing a data capture system that runs as a thread in the kflop, which will log the command and actual positions at (say) 1ms intervals.  The data will be uploaded to the PC so we can run some numerical analysis.

So the question is, what are the appropriate fields to capture?  My initial thought is to look at chan[n].Dest and chan[n].Position, although I am not sure that Dest is going to be updated smoothly in real-time.  For example, if the interpreter commands a linear move to position X, does Dest get set to X immediately, or does Dest increment over time according to the commanded speed?

Or maybe it would be better to look at FollowingError and take that as the (negative) vector displacement from the encoder position back to the command position at that instant?

Since we have closed loop control, and we optimized the response fairly tightly using the KMotion.exe step response, it is possible that we have it "too tight" in that the compensating motion is exciting some resonance in the machine frame - this is something that might not be possible to capture just using the kflop, but we might be able to see some resonance if we do a Fourier analysis of the captured data on the PC.

Regards,
SJH



Group: DynoMotion Message: 12556 From: TK Date: 11/28/2015
Subject: Re: Capturing move/following vectors
Hi SJH,

chan[n].Dest updates smoothly in real time (every 90us).   Capture the Dest so you can analyze how smooth the trajectory is, and Position to see how well the system is following the trajectory.  See:
C:\KMotion433q\C Programs\CaptureXYMotionPosDest.c

A Bode plot should give some indication of system resonances.

Regards
TK

On 11/28/2015 10:48 AM, Hardy Family hardy.woodland.cypress@... [DynoMotion] wrote:
 
Hi Tom,

One of our customers is doing some 3-D surface profiling with a small ball-end mill, and is finding the surface finish to be somewhat worse than his old system using Mach3/SmoothStepper (on the same physical machine).

The kflop setup uses 1um encoder feedback, whereas the old system was open loop.

We are trying to track down the reason for this, but we expect it is because we have not set the axis parameters optimally for this task.  So I am implementing a data capture system that runs as a thread in the kflop, which will log the command and actual positions at (say) 1ms intervals.  The data will be uploaded to the PC so we can run some numerical analysis.

So the question is, what are the appropriate fields to capture?  My initial thought is to look at chan[n].Dest and chan[n].Position, although I am not sure that Dest is going to be updated smoothly in real-time.  For example, if the interpreter commands a linear move to position X, does Dest get set to X immediately, or does Dest increment over time according to the commanded speed?

Or maybe it would be better to look at FollowingError and take that as the (negative) vector displacement from the encoder position back to the command position at that instant?

Since we have closed loop control, and we optimized the response fairly tightly using the KMotion.exe step response, it is possible that we have it "too tight" in that the compensating motion is exciting some resonance in the machine frame - this is something that might not be possible to capture just using the kflop, but we might be able to see some resonance if we do a Fourier analysis of the captured data on the PC.

Regards,
SJH




Group: DynoMotion Message: 12557 From: Hardy Family Date: 11/28/2015
Subject: Re: Capturing move/following vectors
Thanks for that.  One other piece of information that would be useful is the actual number of steps output to the motor.  That is, after the control loop and output IIR filter.  Our servo motors are step/direction, and of course they have their own control loops.  So by knowing the output steps, we can also monitor what the motors are doing.  Can the output step count be calculated from the chan fields?

Regards,
SJH


On Sat, Nov 28, 2015 at 12:56 PM, TK tk@... [DynoMotion] <DynoMotion@yahoogroups.com> wrote:
 

Hi SJH,

chan[n].Dest updates smoothly in real time (every 90us).   Capture the Dest so you can analyze how smooth the trajectory is, and Position to see how well the system is following the trajectory.  See:
C:\KMotion433q\C Programs\CaptureXYMotionPosDest.c

A Bode plot should give some indication of system resonances.

Regards
TK



On 11/28/2015 10:48 AM, Hardy Family hardy.woodland.cypress@... [DynoMotion] wrote:
 
Hi Tom,

One of our customers is doing some 3-D surface profiling with a small ball-end mill, and is finding the surface finish to be somewhat worse than his old system using Mach3/SmoothStepper (on the same physical machine).

The kflop setup uses 1um encoder feedback, whereas the old system was open loop.

We are trying to track down the reason for this, but we expect it is because we have not set the axis parameters optimally for this task.  So I am implementing a data capture system that runs as a thread in the kflop, which will log the command and actual positions at (say) 1ms intervals.  The data will be uploaded to the PC so we can run some numerical analysis.

So the question is, what are the appropriate fields to capture?  My initial thought is to look at chan[n].Dest and chan[n].Position, although I am not sure that Dest is going to be updated smoothly in real-time.  For example, if the interpreter commands a linear move to position X, does Dest get set to X immediately, or does Dest increment over time according to the commanded speed?

Or maybe it would be better to look at FollowingError and take that as the (negative) vector displacement from the encoder position back to the command position at that instant?

Since we have closed loop control, and we optimized the response fairly tightly using the KMotion.exe step response, it is possible that we have it "too tight" in that the compensating motion is exciting some resonance in the machine frame - this is something that might not be possible to capture just using the kflop, but we might be able to see some resonance if we do a Fourier analysis of the captured data on the PC.

Regards,
SJH





Group: DynoMotion Message: 12558 From: Tom Kerekes Date: 11/29/2015
Subject: Re: Capturing move/following vectors
Hi SJH,

For Closed Loop Step and Direction chan[n].Dest + chan[n].Output will be total steps output to the drive. See:

Regards
TK



TK
On Nov 28, 2015, at 3:30 PM, Hardy Family hardy.woodland.cypress@... [DynoMotion] <DynoMotion@yahoogroups.com> wrote:

 

Thanks for that.  One other piece of information that would be useful is the actual number of steps output to the motor.  That is, after the control loop and output IIR filter.  Our servo motors are step/direction, and of course they have their own control loops.  So by knowing the output steps, we can also monitor what the motors are doing.  Can the output step count be calculated from the chan fields?

Regards,
SJH


On Sat, Nov 28, 2015 at 12:56 PM, TK tk@... [DynoMotion] <DynoMotion@yahoogroups.com> wrote:
 

Hi SJH,

chan[n].Dest updates smoothly in real time (every 90us).   Capture the Dest so you can analyze how smooth the trajectory is, and Position to see how well the system is following the trajectory.  See:
C:\KMotion433q\C Programs\CaptureXYMotionPosDest.c

A Bode plot should give some indication of system resonances.

Regards
TK



On 11/28/2015 10:48 AM, Hardy Family hardy.woodland.cypress@... [DynoMotion] wrote:
 
Hi Tom,

One of our customers is doing some 3-D surface profiling with a small ball-end mill, and is finding the surface finish to be somewhat worse than his old system using Mach3/SmoothStepper (on the same physical machine).

The kflop setup uses 1um encoder feedback, whereas the old system was open loop.

We are trying to track down the reason for this, but we expect it is because we have not set the axis parameters optimally for this task.  So I am implementing a data capture system that runs as a thread in the kflop, which will log the command and actual positions at (say) 1ms intervals.  The data will be uploaded to the PC so we can run some numerical analysis.

So the question is, what are the appropriate fields to capture?  My initial thought is to look at chan[n].Dest and chan[n].Position, although I am not sure that Dest is going to be updated smoothly in real-time.  For example, if the interpreter commands a linear move to position X, does Dest get set to X immediately, or does Dest increment over time according to the commanded speed?

Or maybe it would be better to look at FollowingError and take that as the (negative) vector displacement from the encoder position back to the command position at that instant?

Since we have closed loop control, and we optimized the response fairly tightly using the KMotion.exe step response, it is possible that we have it "too tight" in that the compensating motion is exciting some resonance in the machine frame - this is something that might not be possible to capture just using the kflop, but we might be able to see some resonance if we do a Fourier analysis of the captured data on the PC.

Regards,
SJH